package com.baijiayun.live.ui.speakerlist.item;


/**
 * Created by Shubo on 2019-07-25.
 */
public interface Switchable extends SpeakItem {

    /**
     * 获取所在父容器的位置
     *
     * @return position
     */
    int getPositionInParent();

    /**
     * 获取switchable的状态
     * 在ppt区域、发言列表、全屏等（不包含全屏）
     * @return
     */
    SwitchableStatus getSwitchableStatus();
    /**
     * 获取switchable类型
     * 属于ppt，main还是发言列表的item
     * @return
     */
    SwitchableType getSwitchableType();

    /**
     * 手动设置状态
     * 只在不立即切换状态设置才有用
     * @param status
     */
    void setSwitchableStatus(SwitchableStatus status);

    /**
     * 切换到大屏幕
     */
    void switchToMaxScreen();

    /**
     * 切到发言列表
     */
    void switchToSpeakList();

    /**
     * 切到老师视频区
     */
    void switchToMainScreen();

    /**
     * 切到全屏幕,切到全屏没有状态，全屏容器本身没有元素
     * @param isFullScreen true 切到全屏幕 false还原
     */
    void switchToFullScreen(boolean isFullScreen);

    boolean isInFullScreen();

    /**
     * 切到maxScreen，并且把maxScreen切到发言列表或者mainItem位置
     * 可能发出同步切换信令
     * 与switchToMaxScreen不同
     * switchToMaxScreen只完成一步操作，此方法不用去分步处理
     */
    void switchPPTVideoSync();

    /**
     *切到maxScreen，并且把maxScreen切到发言列表或者mainItem位置
     *不发出同步切换信令
     * @param immediately 是否立即执行
     */
    void switchPPTVideoWithoutSync(boolean immediately);

    /**
     * 同步辅助摄像头和ppt状态
     */
    void syncPPTExtCamera(Switchable closeItem);

    /**
     * 是否是占位图
     * @return
     */
    boolean isPlaceholderItem();

    /**
     * 替换video,与syncPPTExtCamera不同，被关掉的video回到原来的位置，
     * 而syncPPTExtCamera则是覆盖closeItem
     * @param switchable 被替换的switchable
     */
    void replaceVideoSync(Switchable switchable);
}
